#pragma GCC optimize(2)
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
#define pi acos(-1.0)
#define e exp(1.0)
const ll maxn=16;
char mp[maxn][maxn];
bool car[maxn][maxn],ok=false;
int N,M,K;
int dir[4][2]={-1,0,1,0,0,-1,0,1};
struct node{
	int x,y;
};
//vector<node>V;
bool check(int x,int y){//判断是否越界的条件真的是学到了,字符数组定义在main函数之外默认是'\0',其对应
//的ASCII值为0 
	return mp[x][y];
} 
void dfs(int step,vector<node>V){
	if(ok)
	return ;
	int i,j;	
	if(step==K){
		for(i=1;i<=N;i++){
			for(j=1;j<=M;j++){
				if(mp[i][j]=='D'&&car[i][j]){
					ok=true;
					goto p;
				}
			}
		}
		p:
			return ;
	} 
	for(i=0;i<V.size()&&!ok;i++){
		node& jie=V[i];
		for(j=0;j<4&&!ok;j++){
			node pre;
			pre.x=jie.x,pre.y=jie.y;
			while(check(jie.x+dir[j][0],jie.y+dir[j][1])&&mp[jie.x+dir[j][0]][jie.y+dir[j][1]]!='#'&&!car[jie.x+dir[j][0]][jie.y+dir[j][1]]){
				jie.x+=dir[j][0];
				jie.y+=dir[j][1];
//				if(mp[jie.x][jie.y]=='D')
//				break;
			}
			car[jie.x][jie.y]=1;
			car[pre.x][pre.y]=0;
			dfs(step+1,V);
			car[jie.x][jie.y]=0;
			car[pre.x][pre.y]=1;
			jie.x=pre.x;
			jie.y=pre.y;
		}
	}
}
int main()
{
//  freopen(".../.txt","w",stdout);
	ios::sync_with_stdio(false);
	cin>>M>>N>>K;
	int i,j;
	vector<node>V;
	memset(car,0,sizeof(car));
	for(i=1;i<=N;i++){
		cin>>(mp[i]+1);
		for(j=1;j<=M;j++){
			if(mp[i][j]=='R'){
				V.push_back({i,j});
//				car[i][j]=1;
			}
		}
	} 
	dfs(0,V);
	if(ok)
	puts("YES");
	else
	puts("NO");
	return 0;
}
